package ru.dadle8.service.impl.bot;

import org.springframework.stereotype.Service;
import ru.dadle8.model.bot.entity.MenuAction;
import ru.dadle8.model.bot.entity.State;
import ru.dadle8.model.bot.type.CommandState;
import ru.dadle8.service.api.bot.Storage;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

@Service
public class StorageImpl implements Storage {
    private final ArrayList<String> quoteList;
    private final Map<Long, State> currentState;

    StorageImpl() {
        quoteList = new ArrayList<>();
        quoteList.add("✨Как какать?✨");
        quoteList.add("✨А я покакал!✨");
        quoteList.add("✨А ты покакал перед треней?✨");
        quoteList.add("✨А я покакал!✨");
        quoteList.add("✨Как какать?✨");
        quoteList.add("✨А ты покакал перед треней?✨");
        quoteList.add("✨А ты покакал перед треней?✨");
        quoteList.add("✨Как какать?✨");
        quoteList.add("✨А я покакал!✨");

        currentState = new HashMap<>();
    }

    @Override
    public String getRandQuote() {
        int randValue = (int) (Math.random() * quoteList.size());
        return quoteList.get(randValue);
    }

    @Override
    public State getCurrentState(Long chatId) {
        return this.currentState.get(chatId);
    }

    @Override
    public void updateState(State state) {
        currentState.put(state.chatId(), state);
    }

    @Override
    public void updateState(Long chatId, MenuAction menuAction, CommandState commandState) {
        State state = getCurrentState(chatId);
        if (state == null) {
            state = new State(menuAction.getActionId(), commandState, chatId);
        } else {
            state = new State(menuAction.getActionId(), state.commandState(), state.chatId());
        }
        updateState(state);
    }

    @Override
    public void clearState(Long chatId) {
        currentState.put(chatId, null);
    }
}
